package com.gsmr.dao;

import java.util.List;
import java.util.Map;

import com.gsmr.entity.Packet;
import com.gsmr.entity.TCH;
import com.gsmr.entity.TCH_Signaling;

/**
 * TCHDao
 * 
 * @author TCH
 *
 */
public interface TCHDao {

	/**
	 * 根据条件查询表名
	 * 
	 * @param map
	 * @return
	 */
	public List<String> findTableNames(Map<String, Object> map);

	/**
	 * 根据条件查询TCH集合
	 * 
	 * @param map
	 * @return
	 */
	public List<TCH> find(Map<String, Object> map);

	public List<TCH> findASC(Map<String, Object> map);

	public List<TCH_Signaling> findSignaling(Map<String, Object> map);

	public List<TCH_Signaling> findSignalingASC(Map<String, Object> map);

	/**
	 * 获取总记录数
	 * 
	 * @param map
	 * @return
	 */
	public Long getTotal(Map<String, Object> map);

	/**
	 * 修改TCH
	 * 
	 * @param sdcch
	 * @return
	 */
	public int update(Map<String, Object> map);

	/**
	 * 添加TCH
	 * 
	 * @param sdcch
	 * @return
	 */
	public int add(Map<String, Object> map);

	/**
	 * 删除TCH
	 * 
	 * @param map
	 * @return
	 */
	public int delete(Map<String, Object> map);

	/**
	 * 通过多个id查询TCH
	 * 
	 * @param id
	 * @return
	 */
	public List<TCH> findByIds(Map<String, Object> map);

	/**
	 * 通过id查询用户实体
	 * 
	 * @param id
	 * @return
	 */
	public TCH findByPrimaryKey(Map<String, Object> map);

	/**
	 * 根据条件查询TCH集合
	 * 
	 * @param map
	 * @return
	 */
	public List<String> findDistricts(Map<String, Object> map);

	/**
	 * 根据条件查询TCH集合
	 * 
	 * @param map
	 * @return
	 */
	public List<TCH> findMessage_TYPEs(Map<String, Object> map);

	/**
	 * 根据条件查询TCH集合
	 * 
	 * @param map
	 * @return
	 */
	public List<String> findFrontProcessorIds(Map<String, Object> map);

	/**
	 * 根据条件查询TCH集合
	 * 
	 * @param map
	 * @return
	 */
	public List<TCH> findIMSIs(Map<String, Object> map);

	/**
	 * 根据条件查询TCH集合
	 * 
	 * @param map
	 * @return
	 */
	public List<TCH> findMSISDNs(Map<String, Object> map);

	/**
	 * 根据条件查询SDCCH集合
	 * 
	 * @param map
	 * @return
	 */
	public List<TCH> findCTCS_IDs(Map<String, Object> map);
	public int findCTCS_ID(Map<String, Object> map);
	/**
	 * 根据条件创建多表视图
	 * 
	 * @param map
	 * @return
	 */
	public int createOrReplaceView(Map<String, Object> map);

	/**
	 * TCH业务查询中，根据数据类型根据HDLC查询
	 * 
	 * @param map
	 *            数据库表名和UUID
	 * @return HDLC对象
	 */
	public List<Object> findHDLC(Map<String, Object> map);

	/**
	 * TCH业务查询中，根据数据类型根据NPDU查询
	 * 
	 * @param map
	 *            数据库表名和UUID
	 * @return NPDU对象
	 */
	public List<Object> findNPDU(Map<String, Object> map);

	/**
	 * TCH业务查询中，根据数据类型根据TPDU查询
	 * 
	 * @param map
	 *            数据库表名和UUID
	 * @return TPDU对象
	 */
	public List<Object> findTPDU(Map<String, Object> map);

	/**
	 * TCH业务查询中，根据数据类型根据SaPDU查询
	 * 
	 * @param map
	 *            数据库表名和UUID
	 * @return SAPDU对象
	 */
	public List<Object> findSAPDU(Map<String, Object> map);

	/**
	 * TCH业务查询中，根据数据类型根据APDU查询
	 * 
	 * @param map
	 *            数据库表名和UUID
	 * @return APDU对象
	 */
	public List<Object> findAPDU(Map<String, Object> map);

	/**
	 * TCH业务查询中，如果是当日数据，应该先从decoding_table_overall表中查找线程号
	 * 
	 * @param map
	 *            需要查找线程表的类型，HDLC、APDU、SaPDU、TPDU、NPDU
	 * @return 线程号数组
	 */
	public List<String> findDecodeTable(Map<String, Object> map);

	public Packet findPacket(Map<String, String> map);
	
	public List<String> get_imsi(Map<String, Object> map);
	public List<String> get_msisdn(Map<String, Object> map);
	public String get_ctcs_id(Map<String, Object> map);

}
